package com.aqie.rabbitchat.frags.account;

import android.content.Context;
import android.widget.Button;
import android.widget.EditText;

import com.aqie.common.app.PresenterFragment;
import com.aqie.factory.presenter.account.RegisterContract;
import com.aqie.factory.presenter.account.RegisterPresenter;
import com.aqie.rabbitchat.MainActivity;
import com.aqie.rabbitchat.R;

import net.qiujuer.genius.ui.widget.Loading;

import butterknife.BindView;
import butterknife.OnClick;

/**
 * 注册界面
 */
public class RegisterFragment extends PresenterFragment<RegisterContract.Presenter>
        implements RegisterContract.View  {
    private AccountTrigger mAccountTrigger;

    @BindView(R.id.edit_phone)
    EditText mPhone;
    @BindView(R.id.edit_name)
    EditText mName;
    @BindView(R.id.edit_password)
    EditText mPassword;


    @BindView(R.id.loading)
    Loading mLoading;

    @BindView(R.id.btn_submit)
    Button mSubmit;


    @Override
    protected int getContentLayoutId() {
        return R.layout.fragment_register;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        // 拿到我们的Activity的引用
        mAccountTrigger = (AccountTrigger) context;
    }

    @Override
    protected RegisterContract.Presenter initPresenter() {
        return new RegisterPresenter(this);
    }

    /**
     * 注册成功，这个时候账户已经登录
     * 我们需要进行跳转到MainActivity界面
     * 关闭当前界面
     */
    @Override
    public void registerSuccess() {
        MainActivity.show(getContext());
        getActivity().finish();
    }

    /**
     * 当需要显示错误的时候触发，一定是结束了
     * 让控件可以输入 提交按钮可以继续点击
     */
    @Override
    public void showError(String errMsg) {
        super.showError(errMsg);
        mLoading.stop();
        mPhone.setEnabled(true);
        mName.setEnabled(true);
        mPassword.setEnabled(true);
        mSubmit.setEnabled(true);
    }

    /**
     *  正在进行时，正在进行注册，界面不可操作
     * 让控件不可以输入
     * 提交按钮不可以继续点击
     */
    @Override
    public void showLoading() {
        mLoading.start();
        mPhone.setEnabled(false);
        mName.setEnabled(false);
        mPassword.setEnabled(false);

        mSubmit.setEnabled(false);
    }

    /**
     * 点击提交, 调用P层进行注册
     */
    @OnClick(R.id.btn_submit)
    void onSubmitClick() {
        String phone = mPhone.getText().toString();
        String name = mName.getText().toString();
        String password = mPassword.getText().toString();
        mPresenter.register(phone, name, password);
    }

    /**
     * 让AccountActivity进行界面切换
     */
    @OnClick(R.id.txt_go_login)
    void onShowLoginClick() {
        mAccountTrigger.triggerView();
    }
}
